package com.whosly.demo.benchmark.sortalgorithms.selection;

import com.whosly.demo.benchmark.sortalgorithms.ISortingAlgorithms;

/**
 * 选择排序（Selection Sort）
 *
 * @author fengyang
 * @date 2023/6/12 上午10:53
 * @see <a href="fengyang@stoneatom.com">mailTo: fengyang@stoneatom.com</a>
 */
public class SelectionSort implements ISortingAlgorithms
{
    @Override
    public int[] sorting(int[] arr)
    {
        int len = arr.length;

        for (int i = 0; i < len - 1; i++) {
            //最小值对应的下标， 则 arr[minVal] 表示遇到的最小值
            int minIndex = i;
            for (int j = i + 1; j < len; j++) {
                if (arr[minIndex] > arr[j]) {
                    minIndex = j; //表示最小值的下标
                }
            }

            //如果 minIndex 不是i，那么就说明当前下标的后面还有数比当前的下标对应的数字要小，所以进行交换
            if (minIndex != i) {
                int tmp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = tmp;
            }
        }

        return arr;
    }
}
